package ar.org.cfired.creditos;

import java.util.Iterator;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;
import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import ar.org.cfired.creditos.gui.ContenedorTareas;
import ar.org.cfired.creditos.gui.Tarea;
import ar.org.cfired.hibernate.utils.HibernateUtil;

public class PruebaExcepciones {
	private final String[] columnas = { "Cuenta", "Apellido",  "Actividad", "Estado"};
	private final String[] campos = {"graNumeroCuenta", "titApellidos",  "titActividadDesc", Tarea.ESTADO};

	public void probarExecutionNullDoesntExist(String usuario, ExecutionService ex) {
		Tarea tareaPropia = null;
		Session session2 = null; 
		String str = "";
		 ContenedorTareas contenedor;
		 contenedor = new ContenedorTareas(ex);
		try {
		session2 = HibernateUtil.getSessionFactory().getCurrentSession();
		session2.beginTransaction();
		Query q = session2.getNamedQuery("sql_anteriores");
		q.setString("usuario", usuario);
		
		List<Object[]> rta = q.list();
		

		Iterator<Object[]> iterBI = rta.iterator();
		//Object actor;
		   String idTarea;
		   String estado;
		   String perfil;
		   String idEjecucion;
		   boolean boolEstado;
		while (iterBI.hasNext()) {
			Object[] resp = iterBI.next();
			//busqueda.add(taskService.getTask(String.valueOf(resp)));
			if (resp != null) {
				idTarea = String.valueOf(resp[3]);
				perfil = String.valueOf(resp[1]);
				estado = String.valueOf(resp[2]);
				idEjecucion = String.valueOf(resp[0]);
				

				String estadoTarea = String.valueOf(resp[4]);
				String imagenEstado = String.valueOf(resp[5]);											
				
				if (idTarea != null)
					if (idTarea.trim().toLowerCase().equals("null"))
						idTarea = null;
				boolEstado = (String.valueOf(resp[1]).equals(usuario));
				char perfilDoc = ((boolEstado)?Tarea.PERFIL_ESCRITURA:Tarea.PERFIL_LECTURA);
				//System.out.println("Tarea: " + idTarea + "; " + perfil + "; " + estado + ": " + boolEstado + "|" + campos.length);
				//tareaPropia = new Tarea(executionService, boolEstado, idTarea, idEjecucion);
				tareaPropia = new Tarea(boolEstado, idTarea, idEjecucion, perfilDoc);											
				tareaPropia.setEstadoTarea(estado);
				tareaPropia.setAdministrador(false);
				tareaPropia.setIcono(imagenEstado);
				tareaPropia.setEstadoActividad(estadoTarea);
				//tareaPropia.setCampos(listaCampos);
				for (int i = 0; i<campos.length; i++) {
					tareaPropia.addCampo(campos[i]);
				}
				//str += tareaPropia.toHtml();
				contenedor.addTarea(tareaPropia);
			}
		}
			
		str += contenedor.toHTML("Cuenta", 'A', 0, 12);
		
		session2.getTransaction().rollback();
	}

	catch(HibernateException e) {
		e.printStackTrace();
	}
	finally {
		if (session2 != null) 
			if (session2.isOpen())
				session2.close();
	}			
		System.out.println(str);
	}
	
	public static void main (String args[]) {
		PruebaExcepciones pe = new PruebaExcepciones();
		try {
			Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();
			session2.beginTransaction();
			Query q = session2.createSQLQuery("select id_ from jbpmCreditos.dbo.jbpm4_id_user");
			List<String> lista = q.list(); 
			String usuario;
			ExecutionService ex = new Configuration().buildProcessEngine().getExecutionService();
			for (int i=0; i<lista.size(); i++) {
				usuario = lista.get(i);
				System.out.println(usuario);
				pe.probarExecutionNullDoesntExist(usuario,ex);
			}
		}
		catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}
